package com.znf4.config;

import java.io.InputStream;
import java.util.Properties;

import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

/**
 * 系统设置型配置
 */

public class RedisConfig {

	private static final Log LOG = LogFactory.getLog(SystemConfig.class);

	
	/** Redis主节点的IP地址（主备模式） */
	public static String ID_GENERATOR_REDIS_MASTER_IP = "127.0.0.1";
	/** Redis主节点的端口 */
	public static int ID_GENERATOR_REDIS_MASTER_PORT = 6379;
	/** Redis主节点的请求密码 */
	public static String ID_GENERATOR_REDIS_MASTER_PASSWORD = "";
	/** Redis主节点的Lua脚本Sha码 */
	public static String ID_GENERATOR_REDIS_MASTER_LUASHA = "";
	
	
	/** Redis主节点的String 中 key  user ,value*/
	public static String ID_GENERATOR_REDIS_MASTER_STRING_USER_KEY = "" ;
	public static String ID_GENERATOR_REDIS_MASTER_STRING_USER_VALUE ;
	
	/** Redis主节点的String 中 key  account ,value*/
	public static String ID_GENERATOR_REDIS_MASTER_STRING_ACCOUNT_KEY ;
	public static String ID_GENERATOR_REDIS_MASTER_STRING_ACCOUNT_VALUE ;
	
	/** Redis主节点的String 中 key  order ,value*/
	public static String ID_GENERATOR_REDIS_MASTER_STRING_ORDER_KEY ;
	public static String ID_GENERATOR_REDIS_MASTER_STRING_ORDER_VALUE ;
	
	/** Redis主节点的String 中 key  order ,value*/
	public static String ID_GENERATOR_REDIS_MASTER_STRING_RESOURCE_KEY ;
	public static String ID_GENERATOR_REDIS_MASTER_STRING_RESOURCE_VALUE ;
	

	/** Redis备用节点的IP地址（主备模式） */
	public static String ID_GENERATOR_REDIS_BACKUP_IP = "127.0.0.1";
	/** Redis备用节点的端口 */
	public static int ID_GENERATOR_REDIS_BACKUP_PORT = 6380;
	/** Redis备用节点的请求密码 */
	public static String ID_GENERATOR_REDIS_BACKUP_PASSWORD = "";
	/** Redis备用节点的Lua脚本Sha码 */
	public static String ID_GENERATOR_REDIS_BACKUP_LUASHA = "";

	public static String SYSTEM_JSP_STYLE_VERSION = "";
	
	
	/**
	 * 只加载一次.
	 */
	static {
		try {
			LOG.info("=== load system_config.properties and init sys param");
			InputStream proFile = Thread.currentThread().getContextClassLoader().getResourceAsStream("redis_config.properties");
			Properties props = new Properties();
			props.load(proFile);
			init(props);
		} catch (Exception e) {
			LOG.error("=== load and init system_config.properties exception:" + e);
		}
	}

	/**
	 * 根据配置文件初始化静态变量值.
	 * 
	 * @param props
	 */
	private static void init(Properties props) {
		
		// Redis主节点的IP地址（主备模式）
		String id_generator_redis_master_ip = props.getProperty("id.generator.redis.master.ip");
		if (StringUtils.isNotBlank(id_generator_redis_master_ip)) {
			ID_GENERATOR_REDIS_MASTER_IP = id_generator_redis_master_ip;
		} else {
			throw new RuntimeException("系统所属配置为空");
		}
		// Redis主节点的端口
		String id_generator_redis_master_port = props.getProperty("id.generator.redis.master.port");
		if (StringUtils.isNotBlank(id_generator_redis_master_port)) {
			ID_GENERATOR_REDIS_MASTER_PORT = Integer.valueOf(id_generator_redis_master_port.trim()).intValue();
		} else {
			throw new RuntimeException("系统所属配置为空");
		}
		// Redis主节点的请求密码
		String id_generator_redis_master_password = props.getProperty("id.generator.redis.master.password");
		if (StringUtils.isNotBlank(id_generator_redis_master_password)) {
			ID_GENERATOR_REDIS_MASTER_PASSWORD = id_generator_redis_master_password;
		} else {
			throw new RuntimeException("系统所属配置为空");
		}
		// Redis主节点的Lua脚本Sha码
		String id_generator_redis_master_luasha = props.getProperty("id.generator.redis.master.luasha");
		if (StringUtils.isNotBlank(id_generator_redis_master_luasha)) {
			ID_GENERATOR_REDIS_MASTER_LUASHA = id_generator_redis_master_luasha;
		} else {
			throw new RuntimeException("系统所属配置为空");
		}
		
		// Redis备用节点的IP地址（主备模式）
		String id_generator_redis_backup_ip = props.getProperty("id.generator.redis.backup.ip");
		if (StringUtils.isNotBlank(id_generator_redis_backup_ip)) {
			ID_GENERATOR_REDIS_BACKUP_IP = id_generator_redis_backup_ip;
		} else {
			throw new RuntimeException("系统所属配置为空");
		}
		// Redis备用节点的端口
		String id_generator_redis_backup_port = props.getProperty("id.generator.redis.backup.port");
		if (StringUtils.isNotBlank(id_generator_redis_backup_port)) {
			ID_GENERATOR_REDIS_BACKUP_PORT = Integer.valueOf(id_generator_redis_backup_port.trim()).intValue();
		} else {
			throw new RuntimeException("系统所属配置为空");
		}
		// Redis备用节点的请求密码
		String id_generator_redis_backup_password = props.getProperty("id.generator.redis.backup.password");
		if (StringUtils.isNotBlank(id_generator_redis_backup_password)) {
			ID_GENERATOR_REDIS_BACKUP_PASSWORD = id_generator_redis_backup_password;
		} else {
			throw new RuntimeException("系统所属配置为空");
		}
		// Redis备用节点的Lua脚本Sha码
		String id_generator_redis_backup_luasha = props.getProperty("id.generator.redis.backup.luasha");
		if (StringUtils.isNotBlank(id_generator_redis_backup_luasha)) {
			ID_GENERATOR_REDIS_BACKUP_LUASHA = id_generator_redis_backup_luasha;
		} else {
			throw new RuntimeException("系统所属配置为空");
		}
		
		/***************************************************************************************************/
		// Redis 有序id 生成策略  String user key ,value
		if (StringUtils.isNotBlank(props.getProperty("id.generator.redis.master.string.user.key"))) {
			ID_GENERATOR_REDIS_MASTER_STRING_USER_KEY = props.getProperty("id.generator.redis.master.string.user.key");
		} else {
			throw new RuntimeException("系统所属配置为空");
		}
		if (StringUtils.isNotBlank(props.getProperty("id.generator.redis.master.string.user.value"))) {
			ID_GENERATOR_REDIS_MASTER_STRING_USER_VALUE = props.getProperty("id.generator.redis.master.string.user.value");
		} else {
			throw new RuntimeException("系统所属配置为空");
		}
		
		// Redis 有序id 生成策略  String account key ,value
		if (StringUtils.isNotBlank(props.getProperty("id.generator.redis.master.string.account.key"))) {
			ID_GENERATOR_REDIS_MASTER_STRING_ACCOUNT_KEY = props.getProperty("id.generator.redis.master.string.account.key");
		} else {
			throw new RuntimeException("系统所属配置为空");
		}
		if (StringUtils.isNotBlank(props.getProperty("id.generator.redis.master.string.account.value"))) {
			ID_GENERATOR_REDIS_MASTER_STRING_ACCOUNT_VALUE = props.getProperty("id.generator.redis.master.string.account.value");
		} else {
			throw new RuntimeException("系统所属配置为空");
		}
		
		// Redis 有序id 生成策略  String order key ,value
		if (StringUtils.isNotBlank(props.getProperty("id.generator.redis.master.string.order.key"))) {
			ID_GENERATOR_REDIS_MASTER_STRING_ORDER_KEY = props.getProperty("id.generator.redis.master.string.order.key");
		} else {
			throw new RuntimeException("系统所属配置为空");
		}
		if (StringUtils.isNotBlank(props.getProperty("id.generator.redis.master.string.order.value"))) {
			ID_GENERATOR_REDIS_MASTER_STRING_ORDER_VALUE = props.getProperty("id.generator.redis.master.string.order.value");
		} else {
			throw new RuntimeException("系统所属配置为空");
		}
		
		// Redis 有序id 生成策略  String resource key ,value
		if (StringUtils.isNotBlank(props.getProperty("id.generator.redis.master.string.resource.key"))) {
			ID_GENERATOR_REDIS_MASTER_STRING_RESOURCE_KEY = props.getProperty("id.generator.redis.master.string.resource.key");
		} else {
			throw new RuntimeException("系统所属配置为空");
		}
		if (StringUtils.isNotBlank(props.getProperty("id.generator.redis.master.string.resource.value"))) {
			ID_GENERATOR_REDIS_MASTER_STRING_RESOURCE_VALUE = props.getProperty("id.generator.redis.master.string.resource.value");
		} else {
			throw new RuntimeException("系统所属配置为空");
		}
		

		
	}

}
